<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Productos_model extends CI_Model {

	function __construct(){
		parent::__construct();
		//$this->db->cache_off();
		//$this->db->cache_on();
		//$this->db->cache_delete_all();
	}

	function get_productos(Productos_config $config){
		$this->db->select('p.id_producto,c.id_categoria,c.permalink "categoria", p.sku, p.nombre "nombre",i.url "imagen",p.intro "intro",p.descripcion "descripcion",precio,p.permalink "enlace", p.novedad');
		$this->db->from('productos p');
		$this->db->join('imagenes i','i.id_producto=p.id_producto or i.id_producto in (select id_producto from productos scp where scp.id_dependencia=p.id_producto) and i.defecto=1','left');
		$this->db->join('categorias_productos cp','cp.id_producto=p.id_producto','inner');
		$this->db->join('categorias c','cp.id_categoria=c.id_categoria','inner');
		$this->db->where('(p.id_dependencia is null || p.id_dependencia=0)');
		$this->db->where('(!p.descatalogado)');
		$this->db->group_by('id_producto');
		
		if($config->novedades){
			$this->db->where('p.novedad',1);
		}

		if(!empty($config->valor)){
			$this->db->like('p.permalink',url_title($config->valor));
		}

		if(!is_array($config->tipos)){
			$this->db->where('c.tipo',$config->tipos);
		} else if (!empty($config->tipos)) {
			$this->db->where_in('c.tipo',$config->tipos);
		}

		if($config->aleatorios){
			$this->db->order_by('rand()');
		}
		
		if(!empty($config->limite)){
			$this->db->limit($config->limite);
		}
		
		$query = $this->db->get();
		$rows=array();
		$nrows=$query->num_rows();
		if ($nrows > 0){
			return $query->result();
		}
		return $rows;
	}
	
	
	function get_productos_buscador(Productos_config $config){
		$this->db->select('p.id_producto,c.id_categoria,c.permalink "categoria", p.sku, p.nombre "nombre",i.url "imagen",p.intro "intro",p.descripcion "descripcion",precio,p.permalink "enlace", p.novedad');
		$this->db->from('productos p');
		$this->db->join('imagenes i','i.id_producto=p.id_producto or i.id_producto in (select id_producto from productos scp where scp.id_dependencia=p.id_producto) and i.defecto=1','left');
		$this->db->join('categorias_productos cp','cp.id_producto=p.id_producto','inner');
		$this->db->join('categorias c','cp.id_categoria=c.id_categoria','inner');
		$this->db->group_by('id_producto');
	
		if($config->novedades){
			$this->db->where('p.novedad',1);
		}
	
		if(!empty($config->valor)){
			$this->db->like('p.permalink',url_title($config->valor));
			$this->db->or_like('p.sku',$config->valor);
		}
	
		if(!is_array($config->tipos)){
			$this->db->where('c.tipo',$config->tipos);
		} else if (!empty($config->tipos)) {
			$this->db->where_in('c.tipo',$config->tipos);
		}
	
		$query = $this->db->get();
		$rows=array();
		$nrows=$query->num_rows();
		if ($nrows > 0){
			return $query->result();
		}
		return $rows;
	}
	

	function get_categoria($nombre){
		$this->db->select('p.id_producto,c.id_categoria,c.permalink "categoria", p.sku, p.nombre "nombre",i.url "imagen",p.intro "intro",p.descripcion "descripcion",precio,p.permalink "enlace", p.novedad');
		$this->db->from('productos p');
		$this->db->join('imagenes i','i.id_producto=p.id_producto or i.id_producto in (select id_producto from productos scp where scp.id_dependencia=p.id_producto) and i.defecto=1','left');
		$this->db->join('categorias_productos cp','cp.id_producto=p.id_producto','inner');
		$this->db->join('categorias c','cp.id_categoria=c.id_categoria','inner');
		$this->db->where('c.permalink',$nombre);
		$this->db->where('(p.id_dependencia is null || p.id_dependencia=0)');
		$this->db->where('(!p.descatalogado)');
		$this->db->group_by('id_producto');
		$query = $this->db->get();
		$rows=array();
		$nrows=$query->num_rows();
		if ($nrows > 0){
			return $query->result();
		}
		return $rows;
	}

	function get_categorias($nombres){
		$this->db->select('p.id_producto,c.id_categoria,c.permalink "categoria", p.sku, p.nombre "nombre",i.url "imagen",p.intro "intro",p.descripcion "descripcion",precio,p.permalink "enlace", p.novedad');
		$this->db->from('productos p');
		$this->db->join('imagenes i','i.id_producto=p.id_producto or i.id_producto in (select id_producto from productos scp where scp.id_dependencia=p.id_producto) and i.defecto=1','left');
		$this->db->join('categorias_productos cp','cp.id_producto=p.id_producto','inner');
		$this->db->join('categorias c','cp.id_categoria=c.id_categoria','inner');
		$this->db->where_in('c.nombre',$nombres);
		$this->db->where('(p.id_dependencia is null || p.id_dependencia=0)');
		$this->db->where('(!p.descatalogado)');
		$this->db->group_by('id_producto');
		$query = $this->db->get();
		$rows=array();
		$nrows=$query->num_rows();
		if ($nrows > 0){
			return $query->result();
		}
		return $rows;
	}
	 
	function get_tipo_categorias($tipo=null){
		$this->db->select('c.id_categoria,c.id_dependencia,c.nombre');
		$this->db->select('concat("'.$tipo.'/",c.permalink) "enlace"',false);
		$this->db->from('categorias c');
		$this->db->join('tipos t','t.id_tipo=c.tipo','inner');
		if($tipo){
			$this->db->where('t.nombre',$tipo);
		}
		$query = $this->db->get();
		$rows=array();
		$nrows=$query->num_rows();
		if ($nrows > 0){
			return $query->result();
		}
		return $rows;
	}

	function get_producto($nombre){
		$this->db->select('p.id_producto,c.id_categoria,c.permalink "categoria", p.sku, p.nombre "nombre", if( p.intro is null,pp.intro,p.intro ) "intro",if( p.descripcion is null,pp.descripcion,p.descripcion ) "descripcion",p.precio,p.permalink "enlace", p.novedad');
		$this->db->from('productos p');
		$this->db->join('productos pp','pp.id_producto=p.id_dependencia','left');
		$this->db->join('categorias_productos cp','cp.id_producto=p.id_producto','inner');
		$this->db->join('categorias c','cp.id_categoria=c.id_categoria','inner');
		$this->db->where('p.permalink',$nombre);
		$this->db->group_by('p.id_producto');
		//$this->db->where('(p.id_dependencia is null || p.id_dependencia=0)');
		$query = $this->db->get();
		$rows=array();
		$nrows=$query->num_rows();
		if ($nrows > 0){
			return $query->result();
		}
		return $rows;
	}
	 
	function get_producto_from_id($id){
		$this->db->select('p.id_producto,c.id_categoria,c.permalink "categoria", p.sku, p.nombre "nombre",p.descripcion "descripcion",precio,p.permalink "enlace", p.novedad');
		$this->db->from('productos p');
		$this->db->join('categorias_productos cp','cp.id_producto=p.id_producto','inner');
		$this->db->join('categorias c','cp.id_categoria=c.id_categoria','inner');
		$this->db->where('p.id_producto',$id);
		$query = $this->db->get();
		$rows=array();
		$nrows=$query->num_rows();
		if ($nrows > 0){
			return $query->result();
		}
		return $rows;
	}
	 
	function get_atributos($id_producto){

		$this->db->select('p.id_producto,a.id_atributo,ac.id_atributo_contenido,a.nombre "atributo",ac.nombre "contenido"');
		$this->db->from('productos p');
		$this->db->join('productos_atributos_contenidos pac','p.id_producto=pac.id_producto','inner');
		$this->db->join('atributos_contenidos ac','pac.id_atributo_contenido=ac.id_atributo_contenido','inner');
		$this->db->join('atributos a','a.id_atributo=ac.id_atributo','inner');
		$this->db->where('p.id_dependencia',$id_producto);
		$query = $this->db->get();
		$rows=array();
		$nrows=$query->num_rows();
		if ($nrows > 0){
			foreach ($query->result() as $row){
				$rows['combinaciones'][$row->id_producto][]=$row->id_atributo_contenido;
				$rows['combos'][$row->id_atributo]['nombre']=$row->atributo;
				$rows['combos'][$row->id_atributo]['valores'][$row->id_atributo_contenido]=$row->contenido;
			}
		}
		return $rows;
	}
	
	function get_caracteristicas($id_producto){
	
		$this->db->select('p.id_producto,a.id_atributo,ac.id_atributo_contenido,a.nombre "atributo",ac.nombre "contenido"');
		$this->db->from('productos p');
		$this->db->join('productos_atributos_contenidos pac','p.id_producto=pac.id_producto','inner');
		$this->db->join('atributos_contenidos ac','pac.id_atributo_contenido=ac.id_atributo_contenido','inner');
		$this->db->join('atributos a','a.id_atributo=ac.id_atributo','inner');
		$this->db->where('p.id_producto',$id_producto);
		$query = $this->db->get();
		$rows=array();
		$nrows=$query->num_rows();
		
		if ($nrows > 0){
			return $query->result();
		}
		return $rows;
	}
	
	 
	function get_imagenes($id_producto){
		$this->db->select('i.url');
		$this->db->from('imagenes i');
		$this->db->join('productos p','p.id_producto=i.id_producto','left');
		$this->db->where('i.id_producto',$id_producto);
		$this->db->or_where('p.id_dependencia',$id_producto);
		$query = $this->db->get();
		$rows=array();
		$nrows=$query->num_rows();
		if ($nrows > 0){
			return $query->result();
		}
		return $rows;
	}
	 
	 
	function get_breadcrumb_categoria($categoria){

		$query=$this->db->query('SELECT c.id_categoria, c.id_dependencia, c.nombre "categoria", c.descripcion, c.imagen, p.id_categoria "last", null "producto", concat("/", c.permalink) "enlace", if((select count(cat.id_dependencia) from categorias cat where p.id_categoria=cat.id_dependencia)>0,0,1) "final"
				FROM categorias c
				LEFT JOIN categorias p ON p.permalink=?',$categoria);
		//$query = $this->db->get();
		$rows=array();
		$nrows=$query->num_rows();
		if ($nrows > 0){
			return $query->result();
		}
		return $rows;
	}

	function get_breadcrumb_producto($producto){

		$query=$this->db->query('SELECT c.id_categoria, c.id_dependencia, c.nombre "categoria", c.descripcion, c.imagen, cp.id_categoria "last", p.nombre "producto", concat("/", c.permalink) "enlace"
				FROM categorias c
				LEFT JOIN productos p ON p.permalink=?
				LEFT JOIN categorias_productos cp ON p.id_producto=cp.id_producto',$producto);
		//$query = $this->db->get();
		$rows=array();
		$nrows=$query->num_rows();
		if ($nrows > 0){
			return $query->result();
		}
		return $rows;
	}
	
	function get_subproducts($id,$cat=null){
		$this->db->select('p.id_producto,c.id_categoria,c.permalink "categoria", p.sku, p.nombre "nombre",i.url "imagen",p.intro "intro",p.descripcion "descripcion",precio,p.permalink "enlace", p.novedad');
		$this->db->from('productos p');
		$this->db->join('imagenes i','i.id_producto=p.id_producto and i.defecto=1','left');
		$this->db->join('categorias_productos cp','cp.id_producto=p.id_producto','inner');
		$this->db->join('categorias c','cp.id_categoria=c.id_categoria','inner');
		$this->db->where('p.id_dependencia',$id);
		$this->db->where('(!p.descatalogado)');
		if($cat){
			$this->db->where('c.id_categoria',$cat);
		}
		$this->db->group_by('p.id_producto');
		$query = $this->db->get();
		$rows=array();
		$nrows=$query->num_rows();
		if ($nrows > 0){
			return $query->result();
		}
		return $rows;
	}
	
	function get_accesorios($id){
		$this->db->select('p.id_producto,c.id_categoria,c.permalink "categoria", p.sku, p.nombre "nombre",i.url "imagen",p.intro "intro",p.descripcion "descripcion",precio,p.permalink "enlace", p.novedad');
		$this->db->from('productos p');
		$this->db->join('productos_accesorios a','p.id_producto=a.id_producto_accesorio','inner');
		$this->db->join('imagenes i','i.id_producto=p.id_producto and i.defecto=1','left');
		$this->db->join('categorias_productos cp','cp.id_producto=p.id_producto','inner');
		$this->db->join('categorias c','cp.id_categoria=c.id_categoria','inner');
		$this->db->where('a.id_producto',$id);
		$this->db->where('(!p.descatalogado)');
		$this->db->group_by('p.id_producto');
		$query = $this->db->get();
		$rows=array();
		$nrows=$query->num_rows();
		if ($nrows > 0){
			return $query->result();
		}
		return $rows;
	}
	
	function get_firstlevel_categories(){
		$query=$this->db->query('SELECT c.id_categoria, c.id_dependencia, c.nombre "categoria", c.descripcion, c.imagen,  concat("/", c.permalink) "enlace"
				FROM categorias c
				where id_dependencia is null');
		$rows=array();
		$nrows=$query->num_rows();
		if ($nrows > 0){
			return $query->result();
		}
		return $rows;
	}

}

/* End of file productos_model.php */
/* Location: ./application/controllers/productos_model.php */